package com.xiaotu.storage.converter;

import java.math.BigDecimal;
import java.util.Date;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;

import com.xiaotu.common.exception.SpiderException;
import com.xiaotu.common.exception.SpiderExceptionCode;
import com.xiaotu.common.util.DateUtils;
import com.xiaotu.common.util.RegexUtils;

import net.sf.json.JSONObject;

/**
 * @类名 TimestampConverter
 * @日期 2017年2月23日
 * @作者 高海军
 * @功能 时间戳转换器
 */
@Component("TimestampConverter")
public class TimestampConverter extends AConverter
{
	private static final String TIMESTAMP_FORMATE = "yyyy-MM-dd HH:mm:ss.SSS";
	
	@Override
	public Object convert(String value, JSONObject target, boolean needThrow)
	{
		if (StringUtils.isEmpty(value))
		{
			if (needThrow)
				throw new SpiderException(
						SpiderExceptionCode.TimeStampErrorException);
			return value;
		}
		return doConvert(value, target, needThrow);
	}
	
	@Override
	protected Object doConvert(String value, JSONObject target,
			boolean needThrow)
	{
		if (RegexUtils.regexMatch(RegexUtils.REGEX_E_NOTATION, value)
				|| RegexUtils.regexMatch(RegexUtils.REGEX_INTEGER, value))
		{
			return DateUtils.fomartDateToString(
					new Date(new BigDecimal(value).longValue()),
					TIMESTAMP_FORMATE);
		}
		else
		{
			if (needThrow)
				throw new SpiderException(
						SpiderExceptionCode.TimeStampErrorException);
			return value;
		}
	}
}
